¿Son las expresiones regulares incluso apropiadas para este problema? Estoy tratando de extraer bloques de texto rodeados de llaves 'en bruto'. por lo tanto, cualquier cosa rodeada por "" o **,"",~~,``, debe ignorarse por completo. texto de ejemplo:
{ "text1" 'text2' *text3* ~text4~ `text5` } { "half broken1}{" *half broken2}{* 'half broken3}{' ~half broken4}{~ `half broken5}{` } { "{nested text1}" '{nested text2}' ~{nested text3}~ *{nested text4}* `{nested text5}` } { "text1" { `text2` } }Rendimiento esperado:
[ "\"text1\" 'text2' *text3* ~text4~ `text5`", "\"half broken1}{\" *half broken2}{* 'half broken3}{' ~half broken4}{~ `half broken5}{`", "\"{nested text1}\" '{nested text2}' ~{nested text3}~ *{nested text4}* `{nested text5}`", "\"text1\" { `text2` }", "`text2`" ]Puedo apuntar llaves con:
/(?<=\{)[^}]*(?=\})/gmpero eso se come la primera llave enfrentada a } que encuentra para que coincida. Probé algunas otras cadenas, pero hasta ahora, no sé cómo ignorar {"}"} la primera llave en este caso.
(usando la sintaxis js para expresiones regulares)
https://regex101.com/r/EODDXL/1
(?<=\{)(?:"[^"]*"|'[^']*'|\*[^*]*\*|~[^~]*~|`[^`]*`|{[^}]*}|[^}])*?(?=\})
Eso es comenzar con lo que tenía, pero incluye ignorar " seguido de 0 o más [^"] seguido de " . Luego repita este patrón para ' , * , ~ , ` y {} . Esto captura solo los grupos externos. I' No estoy seguro de cómo obtendría exactamente el resultado esperado al final, pero esto puede llevarlo en la dirección correcta.